package schema

import "errors"

// Parking 停车场管理
type Parking struct {
	ID           int64  `bson:"_id"`           // 唯一标识(自增ID)
	RecordID     string `bson:"record_id"`     // 记录内码(uuid)
	NodeName     string `bson:"node_name"`     // 节点名称（例如:停车场名称、楼层名称、区域名称、车位名称）
	NodeType     int    `bson:"node_type"`     // 节点类型（10:停车场 20:楼层 30:区域 40:车位）
	ParkingType  int    `bson:"parking_type"`  // 车位类别(10:临停车位 20:固定车位)
	OwnerName    string `bson:"owner_name"`    // 业主名字
	OwnerTel     string `bson:"owner_tel"`     // 业主电话
	SerialNumber string `bson:"serial_number"` // 车位编号(停车系统的车位编号)
	LevelCode    string `bson:"level_code"`    // 分级码
	ParentID     string `bson:"parent_id"`     // 父级内码(record_id)
	Status       int    `bson:"status"`        // 状态码1->正常2->删除
	Creator      string `bson:"creator"`       // 创建人
	Created      int64  `bson:"created"`       // 创建时间戳
	Deleted      int64  `bson:"deleted"`       // 删除时间戳
}

// ParkingCParams 停车位创建参数
type ParkingCParams struct {
	NodeName     string `json:"node_name"`     // 节点名称（例如:停车场名称、楼层名称、区域名称、车位名称）
	NodeType     int    `json:"node_type"`     // 节点类型（10:停车场 20:楼层 30:区域 40:车位）
	ParkingType  int    `json:"parking_type"`  // 车位类别(10:临停车位 20:固定车位)
	OwnerName    string `json:"owner_name"`    // 业主名字
	OwnerTel     string `json:"owner_tel"`     // 业主电话
	SerialNumber string `json:"serial_number"` // 车位编号(停车系统的车位编号)
	ParentID     string `json:"parent_id"`     // 父级内码(record_id)
}

// Validate 参数校验方法
func (a ParkingCParams) Validate() error {
	//	校验节点类型和节点名称是否为空
	if a.NodeName == "" {
		return errors.New("node_name参数错误")
	}
	if a.NodeType != 10 && a.NodeType != 20 && a.NodeType != 30 && a.NodeType != 40 && a.NodeType != 50 {
		return errors.New("node_type参数错误")
	}
	return nil
}

// ParkingUParams 更新参数结构体等同创建结构体
type ParkingUParams struct {
	NodeName     string `json:"node_name"`     // 节点名称（例如:停车场名称、楼层名称、区域名称、车位名称）
	ParkingType  int    `json:"parking_type"`  // 车位类别(10:临停车位 20:固定车位)
	OwnerName    string `json:"owner_name"`    // 业主名字
	OwnerTel     string `json:"owner_tel"`     // 业主电话
	SerialNumber string `json:"serial_number"` // 车位编号(停车系统的车位编号)
	ParentID     string `json:"parent_id"`     // 父级内码(record_id)
	RecordID     string `json:"record_id"`     // 记录内码(uuid)
}

// Validate 参数校验方法
func (a ParkingUParams) Validate() error {
	return nil
}
